package com.airlines.crewassignment.service.optaplanner;

import org.joda.time.DateTime;
import org.optaplanner.core.api.score.buildin.hardsoft.HardSoftScore;

import com.airlines.base.config.response.ResponseResult;
import com.airlines.crewassignment.domain.CrewLinkLineRoster;

/**
 * @author xxxx
 * @date 2018年3月28日 
 * @description
 */
public interface OptaplannerService {
	
	/**
	 * 飞行员自动排班
	 * @param start
	 * @param end
	 * @return 自动排版的硬规则得分
	 */
	HardSoftScore autoAssignF(DateTime start, DateTime end);

	/**
	 * 自动排班前的一些检查
	 * @param dateTime
	 * @param dateTime2
	 * @return
	 */
	ResponseResult<String> autoAssignFCk(DateTime flightDateStart, DateTime flightDateEnd);

	/**
	 * 解决方案构造
	 * @param start
	 * @param end
	 * @return
	 */
	CrewLinkLineRoster crewLinkLineRosterInit(String dutyCode,DateTime start, DateTime end);
	
	
	/**
	 * 乘务员自动排班
	 * @param start
	 * @param end
	 * @return 自动排版的硬规则得分
	 */
	HardSoftScore autoAssignC(DateTime start, DateTime end);
}
